00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _kalmer_app_h_
00019 #define _kalmer_app_h_
00020
00021 #include "boost/smart_ptr/shared_ptr.hpp"
00022 #include "gridpack/configuration/configuration.hpp"
00023 #include "gridpack/serial_io/serial_io.hpp"
00024 #include "kds_factory_module.hpp"
00025
00026 namespace gridpack {
00027 namespace kalman_filter {
00028
00029
00030
00031 class KalmanApp
00032 {
00033 public:
00034
00035
00036
00037
00038 KalmanApp(void);
00039
00040
00041
00042
00043 ~KalmanApp(void);
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 void readNetwork(boost::shared_ptr<KalmanNetwork> &network,
00055 gridpack::utility::Configuration *config);
00056
00057
00058
00059
00060
00061
00062
00063
00064 void setNetwork(boost::shared_ptr<KalmanNetwork> &network,
00065 gridpack::utility::Configuration *config);
00066
00067
00068
00069
00070
00071 void initialize();
00072
00073
00074
00075
00076 void solve();
00077
00078 private:
00079
00080
00081
00082
00083
00084
00085
00086
00087 std::vector<gridpack::kalman_filter::KalmanBranch::Event>
00088 setFaultEvents(std::vector<gridpack::utility::Configuration::CursorPtr >
00089 cursors);
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099 void getTimeSeries(std::string filename, std::vector<double*> &series,
00100 double &delta_t, int &nsteps, std::vector<int> &keys);
00101
00102
00103
00104
00105
00106
00107 void setTimeData(boost::shared_ptr<KalmanNetwork> &network,
00108 gridpack::utility::Configuration::CursorPtr cursor);
00109
00110
00111 boost::shared_ptr<KalmanNetwork> p_network;
00112
00113
00114 boost::shared_ptr<KalmanFactory> p_factory;
00115
00116
00117 gridpack::parallel::Communicator p_comm;
00118
00119
00120 gridpack::utility::Configuration *p_config;
00121
00122
00123 int p_nsteps;
00124
00125
00126 double p_delta_t;
00127
00128
00129 double p_time_step;
00130
00131
00132 double p_sim_time;
00133
00134
00135 int p_KnownFault;
00136
00137
00138 int p_TimeOffset;
00139
00140
00141 int p_CheckEqn;
00142
00143
00144 std::vector<gridpack::kalman_filter::KalmanBranch::Event> p_faults;
00145
00146
00147 double p_Rm1;
00148 double p_Rm1n;
00149 double p_N_inv;
00150
00151
00152 boost::shared_ptr<gridpack::serial_io::SerialBusIO<
00153 gridpack::kalman_filter::KalmanNetwork> > p_busIO;
00154 boost::shared_ptr<gridpack::serial_io::SerialBusIO<
00155 gridpack::kalman_filter::KalmanNetwork> > p_deltaIO;
00156 boost::shared_ptr<gridpack::serial_io::SerialBusIO<
00157 gridpack::kalman_filter::KalmanNetwork> > p_omegaIO;
00158 boost::shared_ptr<gridpack::serial_io::SerialBranchIO<
00159 gridpack::kalman_filter::KalmanNetwork> > p_branchIO;
00160 };
00161
00162 }
00163 }
00164 #endif